{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Machine Learning For Selection of Appropriate Artificial Lift Technique\n",
    "\n",
    ">Divyanshu Vyas (Oil and Gas Data Science (Machine Learning) Consultant\n",
    "\n",
    "www.linkedin.com/in/divyanshu-vyas\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.read_csv('ALS.csv',index_col=False)\n",
    "\n",
    "df = df.iloc[:,1:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>DEPTH(TVD,ft)</th>\n",
       "      <th>Flow-RATE(bpd)</th>\n",
       "      <th>Temperature(F)</th>\n",
       "      <th>API GRAVITY</th>\n",
       "      <th>LABEL</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>10878.143422</td>\n",
       "      <td>20814.022380</td>\n",
       "      <td>287.118309</td>\n",
       "      <td>36.566497</td>\n",
       "      <td>Gas-Lift</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>8631.332818</td>\n",
       "      <td>2635.067440</td>\n",
       "      <td>304.069194</td>\n",
       "      <td>28.811594</td>\n",
       "      <td>SRP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2303.429459</td>\n",
       "      <td>684.280506</td>\n",
       "      <td>152.687094</td>\n",
       "      <td>13.745976</td>\n",
       "      <td>SRP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2987.234056</td>\n",
       "      <td>3376.023875</td>\n",
       "      <td>136.081863</td>\n",
       "      <td>15.270093</td>\n",
       "      <td>ESP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>11394.914576</td>\n",
       "      <td>3509.794207</td>\n",
       "      <td>391.860717</td>\n",
       "      <td>36.416786</td>\n",
       "      <td>SRP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5995</th>\n",
       "      <td>10359.751076</td>\n",
       "      <td>7883.606777</td>\n",
       "      <td>272.675157</td>\n",
       "      <td>27.148606</td>\n",
       "      <td>Jet Pump</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5996</th>\n",
       "      <td>10172.267152</td>\n",
       "      <td>7596.077089</td>\n",
       "      <td>263.490358</td>\n",
       "      <td>26.427341</td>\n",
       "      <td>Jet Pump</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5997</th>\n",
       "      <td>5721.150763</td>\n",
       "      <td>4235.607393</td>\n",
       "      <td>238.334899</td>\n",
       "      <td>33.129422</td>\n",
       "      <td>PCP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5998</th>\n",
       "      <td>3836.394266</td>\n",
       "      <td>2447.347021</td>\n",
       "      <td>159.489878</td>\n",
       "      <td>20.486092</td>\n",
       "      <td>PCP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5999</th>\n",
       "      <td>13002.787388</td>\n",
       "      <td>25009.441823</td>\n",
       "      <td>352.257487</td>\n",
       "      <td>38.180599</td>\n",
       "      <td>ESP</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>6000 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      DEPTH(TVD,ft)  Flow-RATE(bpd)  Temperature(F)  API GRAVITY     LABEL\n",
       "0      10878.143422    20814.022380      287.118309    36.566497  Gas-Lift\n",
       "1       8631.332818     2635.067440      304.069194    28.811594       SRP\n",
       "2       2303.429459      684.280506      152.687094    13.745976       SRP\n",
       "3       2987.234056     3376.023875      136.081863    15.270093       ESP\n",
       "4      11394.914576     3509.794207      391.860717    36.416786       SRP\n",
       "...             ...             ...             ...          ...       ...\n",
       "5995   10359.751076     7883.606777      272.675157    27.148606  Jet Pump\n",
       "5996   10172.267152     7596.077089      263.490358    26.427341  Jet Pump\n",
       "5997    5721.150763     4235.607393      238.334899    33.129422       PCP\n",
       "5998    3836.394266     2447.347021      159.489878    20.486092       PCP\n",
       "5999   13002.787388    25009.441823      352.257487    38.180599       ESP\n",
       "\n",
       "[6000 rows x 5 columns]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = df.iloc[:,:-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'ESP', 'Gas-Lift', 'HPP', 'Jet Pump', 'PCP', 'SRP'}"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "set(df['LABEL'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "def encoder(x):\n",
    "    \n",
    "    if x == 'ESP':\n",
    "        return 0\n",
    "    if x == 'Gas-Lift':\n",
    "        return 1\n",
    "    if x =='HPP':\n",
    "        return 2\n",
    "    if x == 'Jet Pump':\n",
    "        return 3\n",
    "    if x == 'PCP':\n",
    "        return 4\n",
    "    if x == 'SRP':\n",
    "        return 5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "names = {0:'ESP',\n",
    "        1:'Gas-Lift',\n",
    "        2:'Hydraulic-Piston Pump',\n",
    "        3: 'Jet Pump',\n",
    "        4: 'PCP',\n",
    "        5: 'SRP',\n",
    "        }"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "df['LABEL'] = df['LABEL'].apply(encoder)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>DEPTH(TVD,ft)</th>\n",
       "      <th>Flow-RATE(bpd)</th>\n",
       "      <th>Temperature(F)</th>\n",
       "      <th>API GRAVITY</th>\n",
       "      <th>LABEL</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>10878.143422</td>\n",
       "      <td>20814.022380</td>\n",
       "      <td>287.118309</td>\n",
       "      <td>36.566497</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>8631.332818</td>\n",
       "      <td>2635.067440</td>\n",
       "      <td>304.069194</td>\n",
       "      <td>28.811594</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2303.429459</td>\n",
       "      <td>684.280506</td>\n",
       "      <td>152.687094</td>\n",
       "      <td>13.745976</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2987.234056</td>\n",
       "      <td>3376.023875</td>\n",
       "      <td>136.081863</td>\n",
       "      <td>15.270093</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>11394.914576</td>\n",
       "      <td>3509.794207</td>\n",
       "      <td>391.860717</td>\n",
       "      <td>36.416786</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5995</th>\n",
       "      <td>10359.751076</td>\n",
       "      <td>7883.606777</td>\n",
       "      <td>272.675157</td>\n",
       "      <td>27.148606</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5996</th>\n",
       "      <td>10172.267152</td>\n",
       "      <td>7596.077089</td>\n",
       "      <td>263.490358</td>\n",
       "      <td>26.427341</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5997</th>\n",
       "      <td>5721.150763</td>\n",
       "      <td>4235.607393</td>\n",
       "      <td>238.334899</td>\n",
       "      <td>33.129422</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5998</th>\n",
       "      <td>3836.394266</td>\n",
       "      <td>2447.347021</td>\n",
       "      <td>159.489878</td>\n",
       "      <td>20.486092</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5999</th>\n",
       "      <td>13002.787388</td>\n",
       "      <td>25009.441823</td>\n",
       "      <td>352.257487</td>\n",
       "      <td>38.180599</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>6000 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      DEPTH(TVD,ft)  Flow-RATE(bpd)  Temperature(F)  API GRAVITY  LABEL\n",
       "0      10878.143422    20814.022380      287.118309    36.566497      1\n",
       "1       8631.332818     2635.067440      304.069194    28.811594      5\n",
       "2       2303.429459      684.280506      152.687094    13.745976      5\n",
       "3       2987.234056     3376.023875      136.081863    15.270093      0\n",
       "4      11394.914576     3509.794207      391.860717    36.416786      5\n",
       "...             ...             ...             ...          ...    ...\n",
       "5995   10359.751076     7883.606777      272.675157    27.148606      3\n",
       "5996   10172.267152     7596.077089      263.490358    26.427341      3\n",
       "5997    5721.150763     4235.607393      238.334899    33.129422      4\n",
       "5998    3836.394266     2447.347021      159.489878    20.486092      4\n",
       "5999   13002.787388    25009.441823      352.257487    38.180599      0\n",
       "\n",
       "[6000 rows x 5 columns]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = df['LABEL']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.tree import DecisionTreeClassifier\n",
    "\n",
    "from sklearn.model_selection import train_test_split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "tree = DecisionTreeClassifier()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DecisionTreeClassifier()"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tree.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "yp = tree.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import classification_report, confusion_matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Model Evaluation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9961111111111111"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tree.score(X_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       1.00      0.99      0.99       280\n",
      "           1       0.99      1.00      1.00       302\n",
      "           2       1.00      0.99      1.00       301\n",
      "           3       0.99      1.00      1.00       290\n",
      "           4       1.00      1.00      1.00       318\n",
      "           5       1.00      1.00      1.00       309\n",
      "\n",
      "    accuracy                           1.00      1800\n",
      "   macro avg       1.00      1.00      1.00      1800\n",
      "weighted avg       1.00      1.00      1.00      1800\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(y_test,yp))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "cm = confusion_matrix(y_test,yp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'The Diagonal represents correct classifications.')"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10,6))\n",
    "\n",
    "sns.heatmap(cm,annot=True,cmap='viridis')\n",
    "\n",
    "plt.title('The Diagonal represents correct classifications.')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "yprob = tree.predict_proba(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>DEPTH(TVD,ft)</th>\n",
       "      <th>Flow-RATE(bpd)</th>\n",
       "      <th>Temperature(F)</th>\n",
       "      <th>API GRAVITY</th>\n",
       "      <th>LABEL</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>10878.143422</td>\n",
       "      <td>20814.022380</td>\n",
       "      <td>287.118309</td>\n",
       "      <td>36.566497</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>8631.332818</td>\n",
       "      <td>2635.067440</td>\n",
       "      <td>304.069194</td>\n",
       "      <td>28.811594</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2303.429459</td>\n",
       "      <td>684.280506</td>\n",
       "      <td>152.687094</td>\n",
       "      <td>13.745976</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2987.234056</td>\n",
       "      <td>3376.023875</td>\n",
       "      <td>136.081863</td>\n",
       "      <td>15.270093</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>11394.914576</td>\n",
       "      <td>3509.794207</td>\n",
       "      <td>391.860717</td>\n",
       "      <td>36.416786</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   DEPTH(TVD,ft)  Flow-RATE(bpd)  Temperature(F)  API GRAVITY  LABEL\n",
       "0   10878.143422    20814.022380      287.118309    36.566497      1\n",
       "1    8631.332818     2635.067440      304.069194    28.811594      5\n",
       "2    2303.429459      684.280506      152.687094    13.745976      5\n",
       "3    2987.234056     3376.023875      136.081863    15.270093      0\n",
       "4   11394.914576     3509.794207      391.860717    36.416786      5"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "###"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "###"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "###"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Test Cases\n",
    "\n",
    "testCasedf = df[:5]\n",
    "testcaseX = X[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>DEPTH(TVD,ft)</th>\n",
       "      <th>Flow-RATE(bpd)</th>\n",
       "      <th>Temperature(F)</th>\n",
       "      <th>API GRAVITY</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>10878.143422</td>\n",
       "      <td>20814.022380</td>\n",
       "      <td>287.118309</td>\n",
       "      <td>36.566497</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>8631.332818</td>\n",
       "      <td>2635.067440</td>\n",
       "      <td>304.069194</td>\n",
       "      <td>28.811594</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2303.429459</td>\n",
       "      <td>684.280506</td>\n",
       "      <td>152.687094</td>\n",
       "      <td>13.745976</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2987.234056</td>\n",
       "      <td>3376.023875</td>\n",
       "      <td>136.081863</td>\n",
       "      <td>15.270093</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>11394.914576</td>\n",
       "      <td>3509.794207</td>\n",
       "      <td>391.860717</td>\n",
       "      <td>36.416786</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   DEPTH(TVD,ft)  Flow-RATE(bpd)  Temperature(F)  API GRAVITY\n",
       "0   10878.143422    20814.022380      287.118309    36.566497\n",
       "1    8631.332818     2635.067440      304.069194    28.811594\n",
       "2    2303.429459      684.280506      152.687094    13.745976\n",
       "3    2987.234056     3376.023875      136.081863    15.270093\n",
       "4   11394.914576     3509.794207      391.860717    36.416786"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "testCaseX"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>DEPTH(TVD,ft)</th>\n",
       "      <th>Flow-RATE(bpd)</th>\n",
       "      <th>Temperature(F)</th>\n",
       "      <th>API GRAVITY</th>\n",
       "      <th>LABEL</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>10878.143422</td>\n",
       "      <td>20814.022380</td>\n",
       "      <td>287.118309</td>\n",
       "      <td>36.566497</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>8631.332818</td>\n",
       "      <td>2635.067440</td>\n",
       "      <td>304.069194</td>\n",
       "      <td>28.811594</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2303.429459</td>\n",
       "      <td>684.280506</td>\n",
       "      <td>152.687094</td>\n",
       "      <td>13.745976</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2987.234056</td>\n",
       "      <td>3376.023875</td>\n",
       "      <td>136.081863</td>\n",
       "      <td>15.270093</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>11394.914576</td>\n",
       "      <td>3509.794207</td>\n",
       "      <td>391.860717</td>\n",
       "      <td>36.416786</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   DEPTH(TVD,ft)  Flow-RATE(bpd)  Temperature(F)  API GRAVITY  LABEL\n",
       "0   10878.143422    20814.022380      287.118309    36.566497      1\n",
       "1    8631.332818     2635.067440      304.069194    28.811594      5\n",
       "2    2303.429459      684.280506      152.687094    13.745976      5\n",
       "3    2987.234056     3376.023875      136.081863    15.270093      0\n",
       "4   11394.914576     3509.794207      391.860717    36.416786      5"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "testCasedf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 5, 5, 0, 5], dtype=int64)"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_p = tree.predict(testCaseX)\n",
    "\n",
    "model_p\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_elaborate = df.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "def namer(n):\n",
    "    \n",
    "    return names[n]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_elaborate['Lift technique'] = df_elaborate['LABEL'].apply(namer) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>DEPTH(TVD,ft)</th>\n",
       "      <th>Flow-RATE(bpd)</th>\n",
       "      <th>Temperature(F)</th>\n",
       "      <th>API GRAVITY</th>\n",
       "      <th>LABEL</th>\n",
       "      <th>Lift technique</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>10878.143422</td>\n",
       "      <td>20814.022380</td>\n",
       "      <td>287.118309</td>\n",
       "      <td>36.566497</td>\n",
       "      <td>1</td>\n",
       "      <td>Gas-Lift</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>8631.332818</td>\n",
       "      <td>2635.067440</td>\n",
       "      <td>304.069194</td>\n",
       "      <td>28.811594</td>\n",
       "      <td>5</td>\n",
       "      <td>SRP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2303.429459</td>\n",
       "      <td>684.280506</td>\n",
       "      <td>152.687094</td>\n",
       "      <td>13.745976</td>\n",
       "      <td>5</td>\n",
       "      <td>SRP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2987.234056</td>\n",
       "      <td>3376.023875</td>\n",
       "      <td>136.081863</td>\n",
       "      <td>15.270093</td>\n",
       "      <td>0</td>\n",
       "      <td>ESP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>11394.914576</td>\n",
       "      <td>3509.794207</td>\n",
       "      <td>391.860717</td>\n",
       "      <td>36.416786</td>\n",
       "      <td>5</td>\n",
       "      <td>SRP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5995</th>\n",
       "      <td>10359.751076</td>\n",
       "      <td>7883.606777</td>\n",
       "      <td>272.675157</td>\n",
       "      <td>27.148606</td>\n",
       "      <td>3</td>\n",
       "      <td>Jet Pump</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5996</th>\n",
       "      <td>10172.267152</td>\n",
       "      <td>7596.077089</td>\n",
       "      <td>263.490358</td>\n",
       "      <td>26.427341</td>\n",
       "      <td>3</td>\n",
       "      <td>Jet Pump</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5997</th>\n",
       "      <td>5721.150763</td>\n",
       "      <td>4235.607393</td>\n",
       "      <td>238.334899</td>\n",
       "      <td>33.129422</td>\n",
       "      <td>4</td>\n",
       "      <td>PCP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5998</th>\n",
       "      <td>3836.394266</td>\n",
       "      <td>2447.347021</td>\n",
       "      <td>159.489878</td>\n",
       "      <td>20.486092</td>\n",
       "      <td>4</td>\n",
       "      <td>PCP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5999</th>\n",
       "      <td>13002.787388</td>\n",
       "      <td>25009.441823</td>\n",
       "      <td>352.257487</td>\n",
       "      <td>38.180599</td>\n",
       "      <td>0</td>\n",
       "      <td>ESP</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>6000 rows × 6 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      DEPTH(TVD,ft)  Flow-RATE(bpd)  Temperature(F)  API GRAVITY  LABEL  \\\n",
       "0      10878.143422    20814.022380      287.118309    36.566497      1   \n",
       "1       8631.332818     2635.067440      304.069194    28.811594      5   \n",
       "2       2303.429459      684.280506      152.687094    13.745976      5   \n",
       "3       2987.234056     3376.023875      136.081863    15.270093      0   \n",
       "4      11394.914576     3509.794207      391.860717    36.416786      5   \n",
       "...             ...             ...             ...          ...    ...   \n",
       "5995   10359.751076     7883.606777      272.675157    27.148606      3   \n",
       "5996   10172.267152     7596.077089      263.490358    26.427341      3   \n",
       "5997    5721.150763     4235.607393      238.334899    33.129422      4   \n",
       "5998    3836.394266     2447.347021      159.489878    20.486092      4   \n",
       "5999   13002.787388    25009.441823      352.257487    38.180599      0   \n",
       "\n",
       "     Lift technique  \n",
       "0          Gas-Lift  \n",
       "1               SRP  \n",
       "2               SRP  \n",
       "3               ESP  \n",
       "4               SRP  \n",
       "...             ...  \n",
       "5995       Jet Pump  \n",
       "5996       Jet Pump  \n",
       "5997            PCP  \n",
       "5998            PCP  \n",
       "5999            ESP  \n",
       "\n",
       "[6000 rows x 6 columns]"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_elaborate"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
